package com.zjsru.plan2023.oneday;

/**
 * @Author: cookLee
 * @Date: 2023-12-24
 * 收集足够苹果的最小花园周长
 * 整数坐标 (i, j) 处的苹果树有 |i| + |j| 个苹果
 */
public class MinimumPerimeter {

    /**
     * 主
     * \
     * 输入：neededApples = 1
     * 输出：8
     * 解释：边长长度为 1 的正方形不包含任何苹果。
     * 但是边长为 2 的正方形包含 12 个苹果（如上图所示）。
     * 周长为 2 * 4 = 8 。
     * \
     * 输入：neededApples = 13
     * 输出：16
     * \
     * @param args args
     */
    public static void main(String[] args) {
        MinimumPerimeter minimumPerimeter = new MinimumPerimeter();
        long neededApples = 1;
        System.out.println(minimumPerimeter.minimumPerimeter(neededApples));
    }

    /**
     * 最小周长:数学
     *
     * @param neededApples 需要苹果
     * @return long
     */
    public long minimumPerimeter(long neededApples) {
        long n = 1;
        while (2 * n * (n + 1) * (2 * n + 1) < neededApples) {
            n++;
        }
        return n * 8;
    }
}
